查看原文
其他

不小心执行了 rm -f,先别急着跑路 (内附彩蛋)!

justmine 民工哥技术之路 2021-12-16

点击上方“民工哥技术之路”选择“置顶或星标”

每天10点为你分享不一样的干货

作者:justmine

http://www.cnblogs.com/justmine/p/10359186.html


前言 

每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有bug,呵呵。

那么如果真的删除了不该删除的文件,比如数据库、日志或执行文件,咋办呢?欲知后事如何,请仔细看完本篇文章。


模拟场景


1、删除

误删除服务器目录/root/selenium/Spider下的MySql.Data.dll文件:

> rm -f /root/selenium/Spider/MySql.Data.dll
> ll /root/selenium/Spider/MySql.Data.dll
ls: cannot access /root/selenium/Spider/MySql.Data.dll: No such file or direct


2、恢复

(1)、使用lsof命令查看当前是否有进程打开/root/selenium/Spider/MySql.Data.dll文件:

> lsof | grep /root/selenium/Spider/MySql.Data.dll

从上面可以看出,当前文件状态为已删除(deleted)。

(2)、查看是否存在恢复数据:

/proc/13067/fd:进程操作的文件描述符目录。
86:文件描述符。

> cat /proc/13067/fd/86


(3)、使用I/O重定向恢复文件

> cat /proc/23778/fd/86 > /root/selenium/Spider/MySql.Data.dll
> ls -l /root/selenium/Spider/MySql.Data.dll
-rw-r--r-- 1 root root 702464 Feb 10 12:03 /root/selenium/Spider/MySql.Data.dll

重新运行程序:

说明恢复的文件没有问题。


刨根问底 


前面的模拟场景演示了恢复文件的整个过程,那么原理是什么,在什么情况下,文件才是可恢复的。

在Linux系统中,每个运行中的程序都有一个宿主进程彼此隔离,以/proc/进程号来体现(Linux本质上就是一个文件系统),比如:ls -l /proc/13067 查看进程PID为13067的进程信息。

当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行 rm -f 删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。

总结

如果不小心误删了文件,不要着急,首先使用 lsof 查看打开该文件的进程,然后再使用 cat /proc/进程号/fd/文件描述符 查看恢复数据,最后使用I/O重定向的方式来恢复文件。

这里也给大家再推送一下之前与误删数据相关的经验类的文章:

慌的一批!新手妹子一个命令把公司服务器数据删没了...

顺丰被删库?半个DBA的跑路经验总结

MySQL误删数据救命指南:必收藏

学会了不小误删除文件之后的恢复方法固然重要,但日常的系统安全的防范、强化也同样非常重要,接下来为在看的读者送上福利活动。

福利时间

本次【民工哥技术之路】联合【机械工业出版社华章公司】为大家带来7本非常适合运维工程师阅读的《Linux系统安全:纵深防御、安全扫描与入侵检测》。

《Linux系统安全:纵深防御、安全扫描与入侵检测》

作者:胥峰

这是一部从技术原理、工程实践两个方面系统、深入讲解Linux系统安全的著作,从纵深防御、安全扫描、入侵检测3个维度细致讲解了如何构建一个铜墙铁壁的Linux防护体系。作者是资深的Linux系统安全专家、运维技术专家,在该领域有13年的从业经验,厚积薄发。本书得到了来自腾讯、阿里等知名企业的多位行业专家的高度评价。全书不仅包含大量工程实践案例,而且对各种核心知识点绘制了方便记忆的思维导图。

送书规则:

1、活动仅限公众号读者参加,截止时间2019年8月10日12:30

2、留言分享你在误删文件、系统安全的强化、加固等方面的经验或独特的解决思路(字数20-100),每个人仅一次留言被精选的机会,且行且珍惜。精选留言点赞前3名的读者,各送出上述书籍一本,短时间赞数爆涨或其它刷赞行为均视为无效,将永久取消资格并进入黑名单。

3、精选留言中随机抽取2名留言最走心的读者,各送出上述书籍一本。

4、精选留言中随机抽取2名幸运留言的读者,各送出上述书籍一本。

5、没有被选中的读者朋友也可以通过下面的链接购买此书:


END

关注民工哥技术之路微信公众号,在后台回复关键字:1024 或 2048,可以获取一份最新整理的技术干货。

- 大家都在看 -

一通骚操作,我把SQL执行效率提高了10000000倍!

中国最狂天才:清华退学博士,指责谷歌,遭微软封杀!

传思科裁员,赔偿N+7人均100万+?官方已回应!

线上ECS CPU暴涨100%业务中断,这样排查很赞!

GitHub断供:美国制裁地区帐号都受限,毫无预警

CPU 100%,Full GC次数过多,一招帮你全搞定!

三年半经验,三面鹅厂,被虐的体无完肤....

长按二维码关注民工哥技术之路

公众号后台回复「目录」可以查看公众号文章目录大全,回复「加群」可以加入读者技术交流群,与大家一起交流。

点击【阅读原文】和民工哥一起学技术、搞事情~~

你点一个在看 👍

 就是最大的支持

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存